package br.com.pi.SmartFast.controler;

import br.com.pi.SmartFast.model.FormatoDeNumeros;
import br.com.pi.SmartFast.model.Pedidos;
import br.com.pi.SmartFast.model.PedidosDAO;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Jeferson de Andrade
 */
public class ControleTelaPedidos {

    private javax.swing.JLabel jLRecebeTotal;
    private javax.swing.JTable jTable1;
    private ResultSet rs = null;
    private PedidosDAO dao = new PedidosDAO();
    private JFrame tela;
//    ControleTelaCardapio pedidos = new ControleTelaCardapio();

    public ControleTelaPedidos(JLabel jLRecebeTotal, JTable jTable1, JFrame tela) {
        this.jLRecebeTotal = jLRecebeTotal;
        this.jTable1 = jTable1;
        this.tela = tela;
    }

    public ControleTelaPedidos() {
    }
    

    public void aoAbrirTelaPedidos() {
        try {
            this.populaTabela();
            this.tela.setExtendedState(JFrame.MAXIMIZED_BOTH);
        } catch (Exception e) {
        }

    }


    private void populaTabela() {

        int linha = 0;
        float total = 0;

        for (int i = 0; i < jTable1.getRowCount(); i++) {
            for (int j = 0; j < jTable1.getColumnCount(); j++) {
                jTable1.setValueAt(null, i, j);
            }
        }



        for (Pedidos p1 : ControleTelaCardapio.pedido) {
            if (this.jTable1.getRowCount() == linha) {
                ((DefaultTableModel) this.jTable1.getModel()).addRow(new Vector());
            }
            jTable1.setValueAt(p1.getProduto().getNome(), linha, 0);
            jTable1.setValueAt(p1.getQuantidade_prod(), linha, 1);
            jTable1.setValueAt(p1.getCusto_produto(), linha++, 2);
            total += (p1.getQuantidade_prod() * p1.getCusto_produto());
        }
        jLRecebeTotal.setText(new FormatoDeNumeros(total).getValorMonetario());
    }

    public void enviarPedido() {
        try {
           if(this.salvarPedido()){
            JOptionPane.showMessageDialog(null, "Seu Pedido foi enviado.");
            this.tela.setVisible(false);
            }
        } catch (Exception e) {
        }
    }

    @SuppressWarnings("static-access")
    private boolean  salvarPedido() {

        boolean salvo = false;
        int npedido = this.getNumPedido();

        if(ControleTelaCardapio.pedido.size()>0){

        for (Pedidos p : ControleTelaCardapio.pedido) {
            dao.setGravarDados(p, npedido);
        }
        this.tela.setVisible(false);
        ControleTelaCardapio.pedido.clear();
        salvo=true;
        }else{
            JOptionPane.showMessageDialog(null, "Não existe(m) pedido(s) registrado para esta mesa");
        }

        return salvo;
    }

    private int getNumPedido() {
        int numPedido = 0;

        try {
            String sql = "SELECT MAX(numero_pedido) as nmax FROM pedidos";
            rs = dao.getDadosTabela(sql);

            if (rs.next()) {
                numPedido = rs.getInt("nmax");
            }
            return numPedido + 1;
        } catch (SQLException e) {
            return numPedido;
        }
    }

    @SuppressWarnings("static-access")
    public void excluirItemDoPedido() {

        if (jTable1.isColumnSelected(0) || jTable1.isColumnSelected(1) || jTable1.isColumnSelected(2)) {

            ControleTelaCardapio ctc = new ControleTelaCardapio();
            ctc.setRemoveItemPedido(this.jTable1.getValueAt(this.jTable1.getSelectedRow(), 0).toString());


            JOptionPane.showMessageDialog(null, "Item excluído do Pedido");

            this.populaTabela();
        } else {
            JOptionPane.showMessageDialog(null, "Informe o produto a Excluir!!");

        }
    }
}
